#ifndef _MIX_GIP_H_
#define _MIX_GIP_H_

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

int gip_init();
int gip_deInit();

enum {
    gip_BMP,
    gip_DDS,
    gip_JPG,
    gip_PNG,
    gip_TGA,
};

enum {
    gip_JAI,
};

int gip_loadImageFromFile( const char* filename, void** image);
int gip_loadImageFromMemory( const void* data, size_t size, void**image);
void gip_freeImage( void* image);

/* percent support 10, 25, 50, 75, 100*/
void gip_setJpgSaveQuality( int percent);

int gip_saveToFile( void* image, int format, const char* filename);
int gip_saveToMemory( void* image, int format, void** data, size_t* size, void** extra);
void gip_freeMemory( void* data, void* extra);

int gip_getImageW( void* iamge);
int gip_getImageH( void* image);

int gip_validArea( void* image, int* x, int* y, int* w, int* h);

void* gip_cutImage( void* image, int x, int y, int w, int h);

typedef void (*gip_transDirFunc)( const char* filename, int isFile, void* data);
int gip_transDir( const char* path, gip_transDirFunc, void* data, int transSub);
int gip_createParentDir( const char* filename);

#ifdef __cplusplus
}
#endif // __cplusplus

#endif  // _MIX_GIP_H_
